var express = require('express')
var fs = require('fs')
var path = require('path')
var jwt = require('jsonwebtoken')
//创建子路由对象（用来管理一部分后端路由）
var userRouter = express.Router()


//设置接口
//分页查询
userRouter.get('/list', (req, res) => {
    var { page, count } = req.query

    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/user.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //分页
    var newarr = arr.slice((page - 1) * count, page * count)

    // console.log('收到来自客户端的请求');
    res.send({ code: 200, msg: '请求成功！', list: newarr })
})

//模糊搜索
userRouter.get('/search', (req, res) => {
    var { searchkey } = req.query

    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/user.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //根据参数，从用户的name属性中过滤
    var newarr = arr.filter((item) => {
        // return item.name.indexOf(searchkey) != -1
        //includes() 返回 true/false 
        return item.name.includes(searchkey)
        //return new RegExp(searchkey).test(item.name)
    })
    res.send({ code: 200, msg: '查询成功', list: newarr })
})

//登录
userRouter.post('/login', (req, res) => {
    //想要接收post类型请求的参数 必须提前设置能解析post请求参数的中间件 express.json  和   express.urlencoded
    var { phone, pass } = req.body

    //读取users.json文件中的用户数据
    var filepath = path.join(__dirname, '../json/user.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //用来自客户端的信息做判断，判断是否在服务端的用户列表中
    var i = arr.findIndex((item, index) => {
        return item.phone == phone && item.pass == pass
    })
    //如果i不是1，说明来自客户端的数据是合法的
    if (i != -1) {
        //登陆成功，生成token字符串(身份令牌)
        //借助第三方包 jsonwebtoken 生成token字符串
        // jwt.sign( { 加密的数据 },密钥,{ 算法，过期时间} )
        var token = jwt.sign( {phone},"1234",{algorithm:'HS256',expiresIn:60} )
        res.send({ code: 200, msg: '登陆成功！', userinfo: arr[i], token})
    } else {
        res.send({ code: 400, msg: '登陆失败！' })
    }
})

//注册
userRouter.post('/register', (req, res) => {
    //获取注册相关参数
    var { phone } = req.body

    //读取users.json文件中的用户数据（读取原有数据）
    var filepath = path.join(__dirname, '../json/user.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //判断新用户是否已经存在
    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {   //用户已存在，注册失败
        res.send({ code: 400, msg: '改手机号已注册，注册失败' })
    } else {
        //添加新用户到user.json中
        arr.push({ ...req.body, ingroup: '编辑组', isadmin: true, status: true })
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8')
        res.send({ code: 200, msg: '注册成功！' })
    }
})

//删除
userRouter.post('/delete', (req, res) => {
    var { phone } = req.body

    //读取users.json文件中的用户数据（读取原有数据）
    var filepath = path.join(__dirname, '../json/user.json')
    var arr = fs.readFileSync(filepath)
    arr = arr.toString() ? JSON.parse(arr) : []

    //在arr中查找手机号对应的用户
    var i = arr.findIndex((item) => {
        return item.phone == phone
    })
    if (i != -1) {  //条件成立，
        arr.splice(i, 1)
        fs.writeFileSync(filepath, JSON.stringify(arr), 'utf-8')
        //分页
        var newarr = arr.slice(0, 2)
        res.send({ code: 200, msg: '删除成功！', list: newarr })
    } else {
        res.send({ code: 400, msg: '删除失败！' })
    }
})

//导出子路由对象
module.exports = userRouter
